Automatic explode based on occlusion

ABSTRACT

Methods, systems, and apparatus, including computer program products feature providing a rendering of a three-dimensional assembly of components. An explosion sequence for separating first components of the assembly is determined. The explosion sequence comprises stages in which each stage represents a different spatial relationship between two or more of the first components. A first input is received from an interactive control. A first stage in the explosion sequence is selected based on the first input. The rendering of the assembly is updated, responsive to the first input, to show the first stage of the explosion sequence. A second input is received from the interactive control. A different second stage in the explosion sequence is selected based on the second input. The rendering of the assembly is updated, responsive to the second input, to show the second stage of the explosion sequence.

CROSS-REFERENCE TO RELATED APPLICATION

This application under 35 USC §119, claims foreign priority benefit toInternational Application No. PCT/CN2009/073694, filed Sep. 2, 2009 inthe People's Republic of China, the entire contents of which is herebyincorporated by reference.

TECHNICAL FIELD

This document relates to creating three-dimensional renderings showingspatial relationships between components of an object.

BACKGROUND

Computer Aided Design (CAD) software is often used by designers ofmechanical components and assemblies to create two-dimensional orthree-dimensional renderings of physical objects, components, andassemblies. Such CAD software is often used in the design of a widevariety of tools and machinery. Detailed design and engineering drawingscan be created using CAD software. CAD software often allows users tomanipulate three-dimensional renderings in order to rotate objectsdepicted in the renderings and view the objects from multiple angles.Stress tests, strength tests, and dynamic analysis can also be performedon three-dimensional renderings using CAD software.

In many applications, it is often necessary for manufacturing engineersto create assembly instructions and maintenance documentation for toolsor machinery designed using CAD software. Often times, an illustrationthat shows the various components of an assembly separated spatiallyfrom each other (i.e. an exploded view) is required in order to createassembly instructions and maintenance documentation. Suchthree-dimensional exploded views can maintain positional relevance ofvarious components of an assembly, thereby helping users of instructionmanuals to more clearly see individual components and the spatialrelationships between components.

In many CAD and other three-dimensional rendering software applications,users are able to alter the position of various components of anassembly using a move tool in order to drag components within arendering and change the position of components with respect to othercomponents in the assembly. Creating an exploded view using this processoften requires a large amount of user interaction and a high degree offamiliarity with the internal structure of the of the assembly.

SUMMARY

In general, in one aspect, embodiments feature providing a rendering ofa three-dimensional assembly of components. An explosion sequence forseparating first components of the assembly is determined. The explosionsequence comprises stages in which each stage represents a differentspatial relationship between two or more of the first components. Afirst input is received from an interactive control. A first stage inthe explosion sequence is selected based on the first input. Therendering of the assembly is updated, responsive to the first input, toshow the first stage of the explosion sequence. A second input isreceived from the interactive control. A different second stage in theexplosion sequence is selected based on the second input. The renderingof the assembly is updated, responsive to the second input, to show thesecond stage of the explosion sequence. Other embodiments of this aspectinclude corresponding systems, apparatus, and computer program products.

These and other embodiments can optionally include one or more of thefollowing features. The stages, when rendered in order, can represent adisassembly sequence of the assembly. The control can be a slidercontrol. Input indicating that images of a plurality of stages of theexplosion sequence are to be saved can be received. Images of theindicated plurality of stages can be saved. A presentation whichincludes images of the indicated plurality of stages can be created. Thepresentation can be an assembly presentation. The assembly presentationcan represent a series of steps to be performed when assembling theassembly. The presentation can be a disassembly presentation. Thedisassembly presentation can represent a series of steps to be performedwhen disassembling the assembly. The presentation can include ananimation that shows at least one component moving between a positiondepicted in the first stage and a position depicted in the second stage.A third input can be received from a component distance control. Adistance between two components in the first or second stage can beadjusted based on the third input.

In general, in another aspect, embodiments feature providing a renderingof a three-dimensional assembly of components. A first separationdirection for separating a first component from a second component isdetermined. Determining the first separation direction includesdetermining an occlusion ranking for each occlusion view. Determiningthe first separation direction further includes identifying an occlusionview from the plurality of occlusion views wherein the occlusion rankingof the identified occlusion view satisfies a criterion. Determining thefirst separation direction further includes selecting the viewingdirection associated with the identified occlusion view as the firstseparation direction. The rendering of the assembly is updated to showthe first component spatially separated from the second component byrepositioning one of the first component and the second component alongthe first separation direction. Other embodiments of this aspect includecorresponding systems, apparatus, and computer program products.

These and other embodiments can optionally include one or more of thefollowing features. The occlusion ranking can be based on an occlusionpercentage of the occlusion view. The occlusion percentage can be thepercentage of the first component that is blocked by the secondcomponent for a given occlusion view. The identified occlusion view cansatisfy the criterion by having a lowest occlusion percentage from amongthe plurality of occlusion views. The first component can represent asubstantially linear component. The identified occlusion view cansatisfy the criterion by having a viewing direction that is the same asa major axis of the first component. A second separation direction forseparating a third component from the second component can bedetermined. The rendering of the assembly can be updated to show thesecond component spatially separated from the third component byrepositioning one of the second component and the third component alongthe second separation direction. The third component can be positionedin an original position associated with the third component in therendering while the second component is kept positioned about an axisdefined by the second separation direction with respect to the thirdcomponent and the first component is kept positioned about an axisdefined by the first separation direction with respect to the secondcomponent. The second component can be moved towards an originalposition associated with the second component in the rendering until thesecond component reaches a specified distance gap from the thirdcomponent while the first component is kept positioned about an axisdefined by the first separation direction with respect to the secondcomponent.

The distance between the second component and the third component can bedetermined by projecting the second and third components onto a line andmeasuring the distance on the line between the projections of the secondand third components. The line can be parallel to the axis defined bythe second separation direction. Updating the rendering of the assemblyto show the second component spatially separated from the thirdcomponent can include moving one of the second and third components adistance greater than the specified distance gap. An input can bereceived from a component distance control. A new value can be assignedto the specified distance gap based on the input. The second componentcan be positioned along the axis defined by the second separationdirection a distance equivalent to the new specified distance gap fromthe third component while the first component is kept positioned aboutan axis defined by the first separation direction with respect to thesecond component. The first component can be moved towards an originalposition associated with the first component in the three-dimensionalrendering until the first component reaches a specified distance gapfrom the second component. The first separation direction can bedifferent from the second separation direction. The first separationdirection can be less than 90 degrees from the second separationdirection.

Implementations can provide any, all or none of the followingadvantages. Explosion views for assemblies can be created quickly andefficiently. Explosion views can be selected from a plurality ofexplosion views within an explosion sequence. Assembly and disassemblypresentations can be generated quickly and efficiently. Separationdirections for separating components can be quickly and accuratelydetermined. Explosion views can be easily controlled and manipulated bya user. Separation distances between components in a three-dimensionalrendering can be accurately determined.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features andadvantages will be apparent from the description and drawings, and fromthe claims.

DESCRIPTION OF DRAWINGS

FIG. 1A shows a three-dimensional rendering of an example assemblyhaving multiple components, in accordance with some implementations.

FIG. 1B shows an occlusion view from a first angle generated from thethree dimensional rendering of FIG. 1A.

FIG. 1C shows a second occlusion view from the first angle generatedfrom the three-dimensional rendering of FIG. 1A.

FIG. 1D shows a third occlusion view from the first angle generated fromthe three-dimensional rendering of FIG. 1A.

FIG. 1E shows a fourth occlusion view from a second angle generated fromthe three-dimensional rendering of FIG. 1A.

FIG. 1F shows a fifth occlusion view from the second angle generatedfrom the three-dimensional rendering of FIG. 1A.

FIG. 1G shows a sixth occlusion view from a third angle generated fromthe three-dimensional rendering of FIG. 1A.

FIG. 1H shows a seventh occlusion view from the third angle generatedfrom the three-dimensional rendering of FIG. 1A.

FIG. 2A shows a first stage in an explosion sequence for athree-dimensional rendering of an assembly having multiple components,in accordance with some implementations.

FIG. 2B shows a second stage of the explosion sequence for thethree-dimensional rendering of FIG. 2A.

FIG. 2C shows a third stage of the explosion sequence for thethree-dimensional rendering of FIG. 2A.

FIG. 2D shows an fourth stage of the explosion sequence for thethree-dimensional rendering of FIG. 2A.

FIG. 2E shows a fifth stage of the explosion sequence for thethree-dimensional rendering of FIG. 2A.

FIG. 2F shows a sixth stage of the explosion sequence for thethree-dimensional rendering of FIG. 2A.

FIG. 2G shows the sixth stage of the explosion sequence of FIG. 2F withan increased distance between the components of the assembly.

FIG. 3 shows three-dimensional renderings of objects being projectedonto a one-dimensional line.

FIG. 4 shows an example architecture of a system.

FIG. 5 shows a flowchart of an example method for presenting stages inan explosion sequence.

FIG. 6 shows a flowchart of an example method for separating twocomponents of an assembly in a three-dimensional rendering.

DETAILED DESCRIPTION

Referring to FIG. 1A, in accordance with some implementations, athree-dimensional rendering 100 depicts an example assembly 102 whichincludes components 104 and 106. In the implementation depicted, thecomponent 104 is a long solid cylinder and the component 106 is a wider,shorter cylinder that defines an internal space. The component 104passes through the internal space of the component 106 to form theassembly 102. In alternate implementations, assemblies can includedozens, or hundreds of components, however, for simplicity's sake, thecurrent example will refer to the assembly 102 having only twocomponents. In some implementations, the three-dimensional rendering 100is created using a computer having one or more processors and displayedon a monitor connected to the computer. For example, a laptop computercan be used to create the three-dimensional rendering 100. In someimplementations, the three-dimensional rendering 100 is created usingComputer Aided Design (CAD) software and is displayed by a softwareapplication running on a computer.

Referring now to FIG. 1B, an occlusion view 110 created from thethree-dimensional rendering 100 includes renderings of the components104 and 106. For example, the occlusion view 110 can be created by acomputer having one or more processors and displayed on a monitor incommunication with the computer. The occlusion view 110 shows arendering of the assembly 102 from a first viewing angle. Each of thecomponents 104 and 106 of the assembly 102 are depicted as having adifferent, unique fill pattern, with the component 104 having a firstfill pattern 114 and the component 106 having a second fill pattern 116.In some implementations, each component 104 and 106 is given a uniquecolor in the occlusion view. In some implementations in which theassembly 102 includes one or more additional components, each of thecomponents of the assembly 102 is given a unique color, fill pattern, orcolor/fill pattern combination. Each different fill pattern 114 and 116in the occlusion view 110 represents the portions of each of thecomponents 104 and 106, respectively, that can be seen from the firstviewing angle shown in the occlusion view 110.

The occlusion view 110 indicates which portions of each component 104and 106 are visually occluded while viewing the assembly 102 from thefirst viewing angle. For example, a portion of the top surface of thecomponent 106 is blocked from view by the top portion of the component104. As another example, a middle portion of the component 104 isblocked from view by the component 106 since the component 104 passesthrough the internal space defined by the component 106. Additionally, aportion of the component 104 that extends from the bottom of thecomponent 106, but is not disposed within the internal space is alsoblocked from view by the component 106. In the implementation shown, theocclusion view 110 indicates all of the areas of both components 104 and106 that are visually occluded by the other component 104 or 106 for thefirst viewing angle, but does not indicate all of the areas in which thecomponents 104 and 106 are physically occluded by the other component104 or 106 for the first viewing angle. For example, the first component104 physically blocks a large portion of the backside of the component106 when viewed at the first viewing angle since the component 104passes through the component 106. However, this is not indicated by theocclusion view 110.

Referring now to FIG. 1C, in accordance with some implementations, anocclusion view 120 includes a rendering of the component 104 as viewedfrom the first viewing angle. The fill pattern 116 is used to indicateportions of the component 104 that are physically occluded by thecomponent 106 of the assembly 102 for the first viewing angle. That is,the fill pattern 116 indicates the portion of the component 104 thatwould be physically blocked by the component 106 if an attempt were madeto move the component 104 along the direction of the first viewing angle(e.g. either toward the point of view or away from the point of view ofthe first viewing angle). The fill pattern 114 is used to indicateportions of the component 104 that are not physically occluded by thecomponent 106. In some implementations in which the assembly 102includes one or more additional components, the fill pattern 114 may beused to indicate portions of the component 104 that are not physicallyoccluded by any of the other components of the assembly 102. In otherimplementations in which the assembly 102 includes one or moreadditional components, the fill pattern 114 may be used to indicateportions of the component 104 that are not physically occluded by justthe component 106.

In some implementations, the occlusion view 120 is used to determine anocclusion ranking for the component 104 with respect to the component106 for the first viewing angle. For example, the occlusion view 120 canbe assigned an occlusion ranking on a scale of one to ten, with tenbeing completely physically occluded and a ranking of one representingno physical occlusion. As another example, an occlusion percentage isassigned to the occlusion view 120 as the occlusion ranking. Theocclusion percentage can be the percentage of the component 104 that isphysically blocked by the component 106 from the first viewing angle. Asyet another example, the occlusion ranking is a binary ranking, with anocclusion ranking of one being assigned if there is any physicalocclusion of the component 104 and a occlusion ranking of zero assignedif there is no physical occlusion.

In some implementations, occlusion views for the component 104 arecreated for a plurality of viewing angles. These various occlusion viewscan be used to assign occlusion rankings for each of the plurality ofviewing angles. The occlusion rankings can be compared to each other inorder to determine one or more viewing angles for which the component104 is the least physically blocked by the component 106. In someimplementations in which the assembly 102 includes one or moreadditional components, the occlusion rankings for each of the pluralityof viewing angles are compared to each other in order to determine oneor more viewing angles for which the component 104 is the leastphysically blocked by any of the other components of the assembly 102.

Referring now to FIG. 1D, in accordance with some implementations, anocclusion view 130 includes a rendering of the component 106 as viewedfrom the first viewing angle. The fill pattern 114 is used to indicateportions of the component 106 that are physically occluded by thecomponent 104 of the assembly 102 for the first viewing angle. The fillpattern 114 indicates one or more portions of the component 106 thatwould be physically blocked by the component 104 if an attempt were madeto move the component 106 along the direction of the first viewing angle(e.g. either toward the point of view or away from the point of view ofthe first viewing angle). The fill pattern 116 indicates portions of thecomponent 106 that are not physically occluded by the component 104. Insome implementations in which the assembly 102 includes one or moreadditional components, the fill pattern 116 may be used to indicateportions of the component 106 that are not physically occluded by any ofthe other components of the assembly 102. In other implementations inwhich the assembly 102 includes one or more additional components, thefill pattern 116 can indicate portions of the component 106 that are notphysically occluded by just the component 104.

The occlusion view 130 can be used to assign an occlusion ranking forthe component 106 with respect to the component 104 for the firstviewing angle. For example, an occlusion percentage is calculated forthe occlusion view 130 by calculating a percentage of the area of therendering of the component 106 that includes the first fill pattern 114.This percentage indicates the percentage of the component 106 that isphysically blocked by the component 104. In this example, the calculatedpercentage is assigned to the occlusion view 130 as the occlusionranking. In some implementations, occlusion views for the component 106are created for a plurality of viewing angles. These various occlusionviews are used to assign occlusion rankings for each of the plurality ofviewing angles, in such implementations. The occlusion rankings can becompared to each other in order to determine one or more viewing anglesfor which the component 104 is the least physically blocked by thecomponent 106. In some implementations in which the assembly 102includes one or more additional components, the occlusion rankings foreach of the plurality of viewing angles are compared to each other inorder to determine one or more viewing angles for which the component104 is the least physically blocked by any of the other components ofthe assembly 102.

The occlusion view 130 gives a better indication of the areas of thecomponent 106 that are physically blocked by the component 104 (andtherefore, a more accurate occlusion ranking) than the occlusion view110 depicted in FIG. 1B. Since the occlusion view 110 only indicates theportions of the component 106 that are visually occluded by thecomponent 104, only a small percentage of the viewable area of thecomponent 106 is shown as being occluded in the occlusion view 110,whereas the occlusion view 130 gives a more accurate representation ofthe percentage of the component 106 that is blocked by the component104. The more accurate representation given by the occlusion view 130leads to a more accurate occlusion ranking being determined for thefirst viewing angle than if the occlusion view 110 is used to determinean occlusion ranking for the first viewing angle.

Referring now to FIG. 1E, an occlusion view 140 created from thethree-dimensional rendering 100 (FIG. 1A) includes renderings of thecomponents 104 and 106. The occlusion view 140 indicates portions of thecomponents 104 and 106 that are visible when the assembly 102 is viewedfrom a second viewing angle, the second viewing angle being differentthan the first viewing angle. The first fill pattern 114 indicatesportions of the component 104 that are visible from the second viewingangle while the second fill pattern 116 indicates portions of thecomponent 106 that are visible from the second viewing angle. In someimplementations, each component 104 and 106 is given a unique color orcolor/fill pattern combination in the occlusion view 140.

The occlusion view 140 indicates portions of each component 104 and 106that are visually occluded while viewing the assembly 102 from thesecond viewing angle. For example, a middle portion of the component 104is blocked from view by the component 106 since the component 104 passesthrough the internal space defined by the component 106. In theimplementation shown, the occlusion view 110 indicates all of the areasof both components 104 and 106 that are visually occluded by the othercomponent 104 or 106 for the first viewing angle, but does not indicateall of the areas in which the components 104 and 106 are physicallyoccluded by the other component 104 or 106 for the first viewing angle.For example, the occlusion view 140 indicates that no portions of thecomponent 106 are visually occluded when viewing the assembly 102 fromthe second viewing angle. In some implementations, an occlusion viewcreated from the second viewing angle in which the component 106 ispositioned completely in front of the component 104, rather thanencircling the component 104, would appear the same as the occlusionview 140. Therefore, determining an occlusion ranking for the component106 with respect to the component 104 for the second viewing angle usingthe occlusion view 140 may lead to an inaccurate representation of howmuch of the component 106 is blocked by the component 104 and whether ornot the component 106 can be separated from the component 104 by movingthe component 106 along the direction of the second viewing angle. Forexample, the first component 104 physically blocks a large portion ofthe backside of the component 106 when viewed at the second viewingangle since the component 104 passes through the component 106. However,this is not indicated by the occlusion view 140.

Referring now to FIG. 1F, in accordance with some implementations, anocclusion view 150 includes a rendering of the component 106 as viewedfrom the second viewing angle. The fill pattern 114 is used to indicateportions of the component 106 that are physically occluded by thecomponent 104 of the assembly 102 for the second viewing angle. The fillpattern 114 indicates one or more portions of the component 106 thatwould be physically blocked from moving by the component 104 if anattempt were made to move the component 106 along the direction of thesecond viewing angle. The fill pattern 116 indicates portions of thecomponent 106 that are not physically occluded by the component 104.

In some implementations, the occlusion view 150 is used to determine anocclusion ranking for the component 106 with respect to the component104 for the second viewing angle. For example, the occlusion view 150can be assigned a ranking from a spectrum of rankings consisting of“Fully Blocked”, “Mostly Blocked”, “Partially Blocked”, and “NotBlocked.” As another example, an occlusion percentage is calculated forthe occlusion view 150 by calculating a percentage of the area of therendering of the component 106 that includes the first fill pattern 114.This percentage indicates the percentage of the component 106 that isphysically blocked by the component 104. In this example, the calculatedpercentage is assigned to the occlusion view 150 as the occlusionranking. In some implementations, the occlusion percentage determinedfor the occlusion view 150 is compared to the occlusion percentagedetermined for the occlusion view 130 (FIG. 1D) as well as a pluralityof occlusion percentages calculated for occlusion views associated withvarious viewing angles for the assembly 102. Comparing the occlusionpercentage for the occlusion views 130 and 150 can indicate that alarger percentage of the component 106 is physically occluded by thecomponent 104 when the assembly 102 is viewed from the second viewingangle than when the assembly 102 is viewed from the first viewing angle.This comparison can indicate that the component 106 can be more readilyseparated from the component 104 along the direction of the firstviewing angle than along the direction of the second viewing angle.

Still referring to FIG. 1F. the occlusion view 150 gives a more accurateindication of the areas of the component 106 that are physically blockedby the component 104 (and therefore, a more accurate occlusion ranking)than the occlusion view 140 (FIG. 1E). The occlusion view 140 shows noocclusion of the component 106, whereas the occlusion view 150 gives amore accurate representation of the percentage of the component 106 thatis blocked by the component 104 by indicating with the fill pattern 114the portions of the component 106 that are physically blocked by thecomponent 104. The more accurate representation given by the occlusionview 150 leads to a more accurate occlusion ranking being determined forthe second viewing angle than if the occlusion view 140 is used todetermine an occlusion ranking for the second viewing angle.

Referring now to FIG. 1G, in accordance with some implementations, anocclusion view 160 created from the three-dimensional rendering 100(FIG. 1A) includes renderings of the components 104 and 106. Theocclusion view 160 indicates portions of the components 104 and 106 thatare visible when the assembly 102 is viewed from a third viewing angle,the third viewing angle being different than the first and secondviewing angles. The first fill pattern 114 indicates portions of thecomponent 104 that are visible from the third viewing angle while thesecond fill pattern 116 indicates portions of the component 106 that arevisible from the third viewing angle. In some implementations, eachcomponent 104 and 106 is given a unique color or color/fill patterncombination in the occlusion view 160.

Referring to FIG. 1H, an occlusion view 170 includes a rendering of thecomponent 106 as viewed from the third viewing angle. The fill pattern116 indicates portions of the component 106 that are not physicallyoccluded by the component 104. The occlusion view 170 does not includeany portions that contain the fill pattern 114. This indicates thatthere are no portions of the component 106 that are physically occludedby the component 104 when the assembly 102 is viewed from the thirdviewing angle.

In some implementations, the occlusion view 170 is used to determine anocclusion ranking for the component 106 with respect to the component104 for the third viewing angle. For example, an occlusion percentage iscalculated for the occlusion view 170 by calculating a percentage ofcomponent 106 that is physically blocked by the component 104 when theassembly 102 is viewed from the third angle. In this example, theocclusion percentage for the component 106 for the third viewing angleis zero since there are no portions of the component 106 that arephysically occluded for the third viewing angle. In someimplementations, the calculated percentage is assigned to the occlusionview 170 as the occlusion ranking for the component 106 when viewed fromthe third viewing angle. In some implementations, the occlusionpercentage determined for the occlusion view 170 is compared toocclusion percentages determined for the occlusion view 130 (FIG. 1D)and the occlusion view 150 (FIG. 1F). In some implementations, theocclusion percentage determined for the occlusion view 170 is furthercompared to occlusion percentages determined for a plurality of otherocclusion views for the assembly 102. The occlusion percentages for thevarious occlusion views to determine one or more viewing angles forwhich there is the least, or possibly zero, physical occlusion of thecomponent 106. This comparison can indicate that the component 106 canbe more readily separated from the component 104 along the direction ofthe third viewing angle than along the directions of the first andsecond viewing angles since there is no occlusion of the component 106for the occlusion view 170.

In some implementations, the direction of a viewing angle that isassociated with a best occlusion ranking (e.g. a lowest occlusionpercentage) of a plurality of viewing angles is selected as a separationdirection for separating a first component from a second component in athree dimensional rendering of an assembly in order to create anexploded view of the assembly. For example, the component 106 can beseparated from the component 104 along the direction of the thirdviewing angle since the occlusion view 170 indicates that the component106 is not physically occluded by the component 104 for the thirdviewing angle. In this example, the direction of the third viewing angleis the separation direction for separating the component 106 from thecomponent 104. The components 104 and 106 can be separated in thethree-dimensional rendering 100 (FIG. 1) by moving the component 106toward the point of view of the third viewing angle or by moving thecomponent 104 away from the point of view of the third viewing angle. Insome implementations, separating the components 104 and 106 includesmoving one of the components 104 or 106 until the two components are aspecified distance apart. In some implementations, this specifieddistance is predetermined. In other implementations, the specifieddistance is based on user input. For example, a user of a CAD softwareapplication can indicate a distance gap for positioning the component106 in relation to the component 104 in an exploded view of the assembly102.

In some implementations, two components in an assembly are separatedalong an identified separation direction by a significantly largedistance (e.g. an infinite distance). An exploded view of the assemblyis then created by moving a first of the two components toward the otherof the two components until the first component is a specified distancefrom the other component. For example, the component 106 is separatedfrom the component 104 by moving the component 106 a significantly largedistance in the identified separation direction defined by the thirdviewing angle. An exploded view of the assembly 102 is then created bymoving the component 106 toward the component 104 in thethree-dimensional rendering 100 until the component 106 reaches aspecified distance gap from the component 104.

In some implementations, a separation direction for separating twocomponents in an assembly is based on an occlusion ranking other thanocclusion percentage. For example an assembly includes a substantiallylinear component, such as a nut, bolt, screw, nail, pin, etc. Anocclusion view associated with an occlusion angle having a directionthat is the same as the major access of the substantially linearcomponent can be assigned a “top” or “best” occlusion ranking from amonga plurality of occlusion views for the assembly. In this example, themajor axis of the substantially linear component is determined as theseparation direction for separating the substantially linear componentfrom one or more other components of the assembly. Using a major axis ofa substantially linear component to identify a separation direction canbe especially helpful when the substantially linear component is a screwor other threaded fasteners, since the threads of the substantiallylinear component will always be at least partially physically occludedfor any viewing angle of the assembly. In some implementations,occlusion views are not needed when determining a separation directionfor separating a substantially linear component from one or more othercomponents of an assembly. In such implementations, the major axis ofthe substantially linear component is identified as having an occlusionranking that satisfies a separation criteria and is selected as theseparation direction with out the use of occlusion views.

Referring now to FIG. 2A, in accordance with some implementations, adisplay depicts a three-dimensional rendering 200 of an assembly 202 aswell as a first interactive control 250 and a second interactive control270. In some implementations, the display is generated by a computerhaving one or more processors and displayed on a monitor connected tothe computer. In some implementations, a software application, such asComputer Aided Design (CAD) software, is used to generate the display.

The assembly 202 is composed of a plurality of components. In FIG. 2A,the assembly 202 is depicted in an assembled state. The componentsengage each other to form the assembled assembly 202. The fullyassembled state represents the first step in an explosion sequence forthe assembly 202. An explosion sequence is a set of images depicting theassembly 202 in which various components of the assembly 202 arearranged in different various spatial relationships with respect to eachother. For example, FIG. 2A depicts a first stage in an explosionsequence for the assembly 202 and FIG. 2B depicts a second stage in theexplosion sequence. In FIG. 2A, the assembly 202 is shown in anassembled state. In FIG. 2B, the assembly 202 is shown with a component204 spatially separated from the remaining components of the assembly202. The remaining components of the assembly 202 form a sub-assembly206. The sub-assembly 206 includes all of the components of the assembly202 except for the component 204. In some implementations, thecomponents of the sub-assembly 206 are positioned in an assembled staterelative to each other.

In some implementations, the various stages of the explosion sequence,when presented in order, represent a disassembly sequence for theassembly 202. The disassembly sequence indicates an order fordisassembling the components of the assembly 202 from each other. Insome implementations, the stages of the explosion sequence can bepresented in a reverse order to represent an assembly sequence for theassembly 202. The assembly sequence indicates an order for assemblingthe components of the assembly 202 in order to create an assembledversion of the assembly 202 as shown in FIG. 2A.

In some implementations, a separation direction for separating thecomponent 204 from the sub-assembly 206 is determined before separatingthe component 204 from the sub-assembly 206. For example, a plurality ofocclusion views for a variety of viewing angles can be generated. Eachof the plurality of occlusion views can visually portray portions of thecomponent 204 that are physically occluded by the sub-assembly 206, orportions of the sub-assembly 206 that are physically occluded by thecomponent 204. Each occlusion view can be assigned an occlusion ranking.For example, an occlusion percentage representing the percentage of thecomponent 204 that is physically occluded by the sub-assembly 206 can becalculated and assigned to each occlusion view. The direction of theviewing angle of the occlusion view having the lowest occlusionpercentage is selected as the separation direction for separating thecomponent 204 from the sub-assembly 206. In some implementations, anocclusion ranking metric other than an occlusion percentage is used toselect a separation direction. For example, the component 204 as shownin FIG. 2B is a substantially linear component. The major axis of thecomponent 204 can be selected as the separation direction for separatingthe component 204 from the sub-assembly 206.

In some implementations, the component 204 is separated from thesub-assembly 206 by moving the component 204 along the separationdirection within the three-dimensional rendering 200. In someimplementations, the component 204 is moved within the three-dimensionrendering until the component 204 and the sub-assembly 206 are aspecified distance apart. In some implementations, this specifieddistance is predetermined. In other implementations, the specifieddistance is based on user input. For example, a user of a CAD softwareapplication can indicate a distance gap for positioning the component204 in relation to the sub-assembly 206 in the second stage of theexplosion sequence. As another example, the second interactive control270 can be used to specify a relative distance gap between the component204 and the sub-assembly 206. A user can use buttons 272 and 274 of thesecond interactive control 270 to increase or decrease the distance gapbetween the component 204 and the sub-assembly 206. For example, a usercan use a cursor 280 to select the button 274 to increase the distancegap between the component 204 and the sub-assembly 206. In someimplementations, the component 204 and the sub-assembly 206 areseparated along the selected separation direction by a significantlylarge distance (e.g. an infinite distance). An exploded view shown inFIG. 2B for the second stage of the explosion sequence is then createdby moving the component 204 toward the sub-assembly 206 within thethree-dimensional rendering 200 until the component 204 is a specifieddistance from the sub-assembly 206.

In some implementations, the explosion sequence for the assembly 202 isdetermined by analyzing a plurality of occlusion views associated withthe three-dimensional rendering 200 of the assembly 202. In someimplementations, the occlusion views are pre-stored images of theassembly 202 when viewed from a plurality of different viewing angles.In other implementations, the occlusion views are generated dynamicallyusing the three-dimensional rendering 200. Occlusion views areassociated with a plurality of viewing angles. For each differentviewing angle, a separate occlusion view for each component of theassembly 202 can be created. The occlusion view associated with aparticular viewing angle and component can visually depict the areas ofthe component that are physically occluded by the other components ofthe assembly 202, as described above with reference to FIGS. 1A-1H. Anocclusion ranking can then be associated with each occlusion view. Forexample, an occlusion ranking selected from the list of Best, Good,Poor, or Low is associated with each occlusion view. As another example,an occlusion percentage is assigned to each occlusion view.

In some implementations, the occlusion rankings for each of theplurality of occlusion views are compared to each other and an occlusionview having a best occlusion ranking (e.g. a lowest occlusionpercentage) is identified. The component associated with the identifiedocclusion view can be selected as the next component to be separatedfrom the assembly 202 and the viewing angle associated with theidentified occlusion view can be selected as the separation directionfor separating the selected component from the remaining components inthe assembly 202. For example, an occlusion view that indicates whichportions of the component 204 are physically occluded by the othercomponents of the assembly 202 can be identified as having a bestocclusion ranking. For example, the occlusion view associated with thecomponent 204 may have a lower occlusion percentage than any occlusionviews associated with a component 208. In this example, the component204 can be identified as a better candidate for separation from theassembly 202 than the component 208. This comparison can be performedbetween occlusion views associated with the component 204 and occlusionviews associated with other components of the assembly 202. Upon beingidentified as a best candidate for separation from the remainingcomponents of the assembly 202, in some implementations, the component204 is separated from the remaining components along the direction ofthe viewing angle of the identified occlusion view.

In some implementations, components within an assembly can be groupedtogether and considered as one component for the purposes of determininga separation order of components or a separation direction for the groupof components. For example, an assembly can include a number of boltsfor fastening a first plate component of the assembly to a mainstructure of the assembly. The bolts can be grouped together as acomponent group and considered as one component for the purposes ofdetermining a separation order for the assembly and for determining aseparation direction for the bolts. This can improve the efficiency of acomponent separation method by reducing the total number of separationsteps to be performed.

In some implementations, after a first candidate component forseparation from the assembly 202 is identified and separated from theremaining components of the assembly 202, a second candidate componentfor separation from the assembly 202 is identified. For example,referring to FIG. 2B, occlusion views associated with the sub-assembly206 can be analyzed to determine a next separation candidate component.In some implementations, the occlusion views for determining the nextseparation candidate component will not include the component 204 sincethe component 204 is already separated from the sub-assembly 206. Theocclusion views are generated for a plurality of different viewingangles. For each different viewing angle, a separate occlusion view foreach component of the sub-assembly 206 can be created. The occlusionview associated with a particular viewing angle and component canvisually depict the areas of the component that are physically occludedby the other components of the sub-assembly 206, as described above withreference to FIGS. 1A-1H. An occlusion ranking can then be associatedwith each occlusion view. A component associated with an occlusion viewhaving a best occlusion ranking can be identified as the next separationcandidate component.

For example, an occlusion view associated with a component 210 can beidentified as having a best occlusion ranking among all occlusion viewsassociated with the sub-assembly 206. The component 210 is thenidentified as the next separation candidate component. Referring to FIG.2C, a third stage of the explosion sequence, which represents a thirdstep in the explosion sequence, is displayed. The third stage shows thecomponent 210 separated spatially within the three-dimensional rendering200 from the remaining components of the sub-assembly 206. The remainingcomponents of the sub-assembly 206 make up a sub-assembly 212. Thecomponent 210 is separated from the sub-assembly 212 along a separationdirection. For example, the separation direction can be the viewingangle of an occlusion view associated with a best occlusion ranking forthe sub-assembly 206 of FIG. 2B. In the example depicted in FIG. 2C, theseparation direction associated with the component 210 happens to be thesame as the separation direction associated with the component 204. Insome implementations, the component 210 is separated from thesub-assembly 212 along the separation direction identified for thecomponent 210 a specified distance gap from the sub-assembly 212. Insome implementations, the distance of separation between the component210 and the sub-assembly 212 is less than the distance of separationbetween the component 204 and the sub-assembly 212 so that the component210 is positioned between the component 204 and the sub-assembly 212without being in contact with either the component 204 or thesub-assembly 212.

In some implementations, occlusions views associated with two differentcomponents of the sub-assembly 206 can have the same occlusion ranking,and furthermore, this same occlusion ranking can be the best occlusionranking. For example, both the component 208 and the component 210 maybe associated with occlusion views in which the occlusion percentage is0%. In some of such implementations, the next candidate component forseparation can be selected randomly from among the components associatedwith occlusion views having the same occlusion ranking in which thissame occlusion ranking is also the best occlusion ranking. In otherimplementations, a component having a separation direction that is mostsimilar to a separation direction for a previously separated componentcan be identified as the next candidate component for separation. Forexample, if the components 208 and 210 are both associated withocclusion views having occlusion percentages of 0%, the component 210can be identified as the next candidate component for separation sincean identified separation direction for the component 210 is closer tothe separation direction for the component 204 than an identifiedseparation direction for the component 208.

In some implementations, various different stages of the explosionsequence are displayed in response to input provided by a user. Forexample, input can be received from the first interactive control 250. Auser can use the first interactive control 250 to select a stage of theexplosion sequence that is to be displayed. For example, user can use amouse, keyboard, trackball, touch pad, touch screen, or other inputdevice to control the cursor 280 or otherwise select a button 254 of thefirst interactive control 250 in order to advance the explosion sequencefrom the first stage depicted in FIG. 2A to the second stage depicted inFIG. 2B. The button 254 can be selected again to advance the explosionsequence from the second stage depicted in FIG. 2B to the third stagedepicted in FIG. 2C. The user can then select a button 252 to move backto the second stage of the explosion sequence from the third stage ofthe explosion sequence. As another example, a slider control 256 of thefirst interactive control 250 can receive input for selecting betweenvarious stages of an explosion sequence. In the example depicted, thefirst step in the explosion sequence is displayed when the slidercontrol 256 is positioned in a left most position. As the slider controlis moved to the right of the first interactive control 250, theexplosion sequence for the assembly 202 is advanced. Sliding the slidercontrol 256 one position to the right causes the explosion sequence toadvance from the first stage depicted in FIG. 2A to the second stagedepicted in FIG. 2B.

In some implementations, the first interactive control 250 includes atext field 258. The text field 258 can indicate a step of the explosionsequence that is currently being displayed. For example, in FIG. 2A, thetext field 258 indicates that the first step in the explosion sequenceis being displayed. As another example, in FIG. 2B, the text field 258indicates that the second step in the explosion sequence is beingdisplayed. In some implementations, the text field 258 can be selectedto allow a user to manually enter a step number to display. For example,a user can select the text field 258 and use a keyboard to type in “6.”The sixth step in the explosion sequence for the assembly 202 can thenbe displayed in response to the user input.

Referring now to FIG. 2D, a fourth stage of the explosion sequence,which depicts the eighth step of the explosion sequence, is shown. Ascompared to FIG. 2C, FIG. 2D shows several more components of theassembly 202 separated from the remaining components of the assembly202. In step eight of the explosion sequence, the component 208 as wellas components 214, 216, 218, and 220 have been separated from theremaining components of the assembly 202. A separation order andseparation directions for the components 208, 214, 216, 218, and 220 canbe determined as described above with reference to FIGS. 2A-2C. Each ofthe components 208, 214, 216, 218, and 220 are separated along theirrespective associated separation directions a specified distance fromthe remaining components of the assembly 202. In some implementations,the eight step is displayed in response to user input. For example, auser can use a cursor or touch screen to select or “click on” the button254 several times to advance the explosion sequence from the third stepdepicted in FIG. 2C to the eighth step depicted in FIG. 2D. As anotherexample, a user can select the text field 258 of the first interactivecontrol 250 and enter the numeral “8” in order to advance to the eighthstep in the explosion sequence.

Referring now to FIG. 2E, a fifth stage of the explosion sequence, whichdepicts the tenth step of the explosion sequence, is shown. In theexample shown, the tenth step of the explosion sequence is the second tolast step of the explosion sequence for the assembly 202. As compared tothe eighth step of the explosion sequence shown in FIG. 2D, the tenthstep of the explosion sequence shown in FIG. 2E shows components 222 and224 separated from the remaining components of the assembly 202. Aseparation order and separation directions for the components 222 and224 can be determined as described above with reference to FIGS. 2A-2C.In FIG. 2E, components 226 and 228 of the assembly 202 are shown in anassembled state relative to each other with the rest of the componentsof the assembly 202 (i.e. components 204, 208, 210, 214, 216, 218, 220,222, and 224) separated spatially from each other within thethree-dimensional rendering 200. In some implementations, a plurality ofocclusion views created from a plurality of viewing angles that indicateportions of the component 226 that are physically blocked by thecomponent 228 are analyzed in order to determine a separation directionfor separating the component 226 from the component 228.

Upon identification of a separation direction, the component 226 isseparated from the component 228 within the three-dimensional rendering200 in order to create the next step in the explosion sequence as shownin FIG. 2F. FIG. 2F depicts the eleventh and final step of the explosionsequence. In the eleventh step of the explosion sequence, all of thecomponents of the assembly 202 are spatially separated from one anotherwith none of the components being in contact with any of the othercomponents of the assembly 202. In some cases, the assembly 202 as shownin FIG. 2F is referred to as being in a fully disassembled state. Insome implementations, a user can use the first interactive control 250to move between steps in the explosion sequence. For example, whileviewing step eleven of the explosion sequence, as shown in FIG. 2F, theuser can select the button 252 to step back through the explosionsequence and cause step ten of the explosion sequence, as shown in FIG.2E, to be displayed. As another example, the user can slide the slidercontrol 256 towards the left of the display in order to cause an earlierstep in the explosion sequence to be displayed.

In the example depicted in FIGS. 2A-2H, the separation directions forseparating the components of the assembly 202 from the remainingcomponents of the assembly 202 are generally increments of 90% from eachother. In this particular example, this relationship is due to thespecific configuration of the assembly 202. In other implementations,the separation directions for various components can be less or morethan 90% away from each other. This is because the separation directionsfor the components are not based on a coordinate system, the separationdirections can be any direction for which an occlusion ranking of anocclusion view associated with the direction meets a specifiedcriterion.

Referring now to FIG. 2G, the assembly 202 is shown in a fullydisassembled state with each of the components spatially separated fromeach of the other components of the assembly 202. The distance gapsbetween each of the components as shown in FIG. 2G is greater than thedistance gaps shown between the components in FIG. 2F. In someimplementations, the distance gaps between the components is increasedin response to input received from the second interactive control 270.For example, a user can use the cursor 280 to select or “click on” thebutton 274 one or more times in order to increase the relative distancegaps between the components of the assembly 202. As another example, thesecond interactive control 270 can include a text field 276 thatdisplays a distance gap percentage. The user can select the text field276 and enter “200” into the text field 276 in order to change therelative distance gaps to 200% of default relative distance gap values.As yet another example, a user can select the button 272 to decrease therelative distance gaps between the components of the assembly 202. Insome implementations, the text field 276 displays a unit of distance forthe distance gaps, for example “2 inches” or “30 cm.” In suchimplementations, the value of the distance gaps can be changed using thebuttons 272 and 274 or by typing a new value into to the text field 276.

In some implementations, distance gap settings can be changed for asubset of the components of the assembly 202 without changing distancegaps for all of the components of the assembly 202. For example, thecomponents 208 and 214 can be selected or otherwise indicated. Thesecond interactive control 270 can then be used to increase or decreasethe distance gap between the components 208 and 214. As another example,the components 210 and 218 are selected or otherwise indicated. A usercan select the button 274 to increase the distance gap between thecomponents 210 and 218. In some implementations, increasing the distancegap between the components 210 and 218 from a first distance gap to asecond distance gap includes moving the component 210 along a separationdirection associated with the component 210 until the distance betweenthe components 210 and 218 is equal to the second distance gap. In someimplementations, increasing the distance gap between the components 210and 218 includes moving the component 204 in a direction that isparallel to the separation direction associated with the 210 so that thecomponent 204 maintains a consistent spatial relationship with respectto the component 210. In some implementations, components of theassembly 202 can be manually moved within the three-dimensionalrendering 200. For example, a user can select the component 224 usingthe cursor 280 and drag the component 224 to a new location within thethree-dimensional rendering 200.

In some implementations, specified distance gap settings are applied toall stages within an explosion sequence. For example, the distance gapratio for the assembly 202 can be increased from 100% to 200% using thesecond interactive control 270. Following this example, the firstinteractive control 250 can be used to step through the explosionsequence. As various stages of the explosion sequence are displayed, thedistance gaps between separated components will be shown at 200% ofstandard distance gap values for each stage in the explosion sequence.In other implementations, changes to distance gap settings are onlyapplied to one or more indicated stages of an explosion sequence. Insome implementations, the three-dimensional rendering 200 can be rotatedfor each stage of an explosion sequence so that the assembly 202 can beviewed from a plurality of different viewing angles. For example,referring to FIG. 2C, a user can manipulate rotation controls to rotatethe third stage of the explosion sequence to view the assembly 202 froma variety of angles. In some implementations, the rotation of thethree-dimensional rendering 200 will be maintained as various steps ofthe explosion sequence are displayed.

Referring to FIGS. 2A-2G, in accordance with some implementations,images of one or more of the stages of the explosion sequence can begenerated. The generated images can then be stored and arranged in anorder to create an assembly presentation for the assembly 202. Ininstances in which the order of the images in the assembly presentationis the same as the order of the steps in the explosion sequence, theassembly presentation indicates a disassembly sequence for the assembly202. In instances in which the order of the images in the assemblypresentation is reverse of the order of the steps in the explosionsequence, the assembly presentation indicates an assembly sequence forthe assembly 202. In some implementations, a play back speed fordisplaying the images of the assembly presentation can be specified by auser. In some implementations, the assembly presentation includesanimation to show the components moving with relation to each other asthe stages of the explosion sequence are displayed. For example, if theimages of the assembly presentation are ordered to show an assemblysequence for the assembly 202, an image of the assembly 202 as shown inFIG. 2B will be displayed before an image of the assembly 202 as shownin FIG. 2A. Following this example, the assembly presentation caninclude animation showing the component 204 moving from the positionshown in FIG. 2B to the position shown in FIG. 2A.

Referring now to FIG. 3, a three-dimensional rendering 300 showscomponents 310 and 320. For example, the components 310 and 320 arecomponents of an assembly. In some implementations, the components 310and 320 may be components of an assembly that includes a plurality ofadditional components. The components 310 and 320 are spatiallyseparated from each other. For example, the depiction of the spatialrelationship between the components 310 and 320 as shown in FIG. 3 maybe a portion of a stage in an explosion sequence for an assembly thatincludes the components 310 and 320.

As described above, two components within an assembly can be separatedby moving one component along a separation direction until a distancebetween the two components is equal to a specified distance gap. Forexample, the component 320 can be separated from the component 310 bymoving the component 320 along a identified separation direction untilthe distance between the components 310 and 320 equals a specifieddistance gap. In some implementations, the distance between thecomponents 310 and 320 is determined by creating one dimensionalprojections of the components 310 and 320. A one dimensional projectionof the component 310 can be created by creating rectangular prism 312that circumscribes the component 310. In some implementations, therectangular prism 312 is the smallest rectangular prism that still fullyencases the component 310. The rectangular prism 312 is projected onto aline 330 to create a one-dimensional projection 314 of the component310. In some implementations, the line 330 is parallel to the identifiedseparation direction for separating the component 320 from the component310. In some implementations, the line 330 is a major axis of acoordinate system, such as an x, y, or z axis. In some implementations,the orientation of the line 330 is selected randomly or pseudo-randomly.

A one-dimensional projection of the component 320 can be created bycreating a rectangular prism 322 that fully circumscribes the component320. In some implementations, the rectangular prism 322 is the smallestrectangular prism that fully surrounds the component 320. Therectangular prism 322 is projected onto the line 330 to create aone-dimensional projection 324 of the component 320. A distance 332 ismeasured along the line 330 between the one-dimensional projection 314and the one-dimensional projection 324. The distance between thecomponents 310 and 320 can be defined as the distance 332 between theone-dimensional projections 314 and 324. In some implementations, whenthe component 322 is separated from the component 312, the component 322is moved along the separation direction until the distance 332 is equalto a specified distance gap.

Referring now to FIG. 4, a system 400 includes a computing device 402,The computing device 402 is a data processing apparatus, for example, adesktop computer, a mobile computing device, or a server. While only onedata processing apparatus is shown in FIG. 4, a plurality of dataprocessing apparatus may be used. In various implementations, thecomputing device 402 includes various modules, e.g. executable softwareprograms. In various implementations, these modules include a renderingmodule 404, an explosion sequencer 406, a image capture module 408,presentation engine 410, an occlusion view generator 412, and aseparation direction selector 414.

The rendering module 404 generates a three-dimensional rendering of anassembly. In some implementations, generating the three-dimensionalrendering includes generating three-dimensional renderings of variouscomponents of the assembly and positioning the components in relation toeach other to create a three-dimensional rendering of the assembly in anassembled state. For example, the rendering module 404 can create thethree-dimensional rendering 100 shown in FIG. 1A. As another example,the rendering module 404 can generate the three-dimensional rendering200 shown in FIG. 2A.

The explosion sequencer 406 creates an explosion sequence for anassembly. For example, an explosion sequence can be created for theassembly represented by the three-dimensional rendering generated by therendering module 404. The explosion sequencer 406 can determine aseparation order for separating the various components of the assemblyas described above with reference to FIGS. 2A-2G. For example, theocclusion view generator 412 can generate a plurality of occlusion viewsof the assembly. The occlusion views can be analyzed by the explosionsequencer 406 to determine an order for separating the variouscomponents of the assembly. In some implementations, this analysisincludes assigning occlusion rankings to the occlusion views andcomparing the occlusion rankings of the plurality of occlusion views.

The separation direction selector determines separation directions forseparating components of an assembly. For example, the separationdirection selector can analyze occlusion views for the assemblygenerated by the occlusion view generator and assign occlusion rankingsto the occlusion views. The separation direction selector 414 can thencompare the occlusion rankings of the occlusion views to determine anocclusion view with a best occlusion ranking. In some instances, morethan one occlusion view can be associated with a best occlusion ranking(e.g. multiple occlusion views with an occlusion percentage of 0%) Insuch instances, a viewing angle of an occlusion view that is closest toa separation direction of a previously separated part from among theocclusion views can be selected as the separation direction forseparating a component associated with the occlusion view. In someinstances in which more than one occlusion view is associated with abest occlusion ranking, one of the more than one occlusion views isselected randomly and the viewing angle of the randomly selectedocclusion view is identified as the separation direction. In someimplementations, the separation direction selector 414 can provideindications of separation directions to the explosion sequencer 406. Theexplosion sequencer 406 can use the indicated separation directions tocreate an explosion sequence of the assembly.

The image capture module 408 creates images of explosion sequences. Forexample, the explosion sequencer 406 generates an explosion sequence foran assembly. The image capture module 408 can capture and store imagesof one or more stages of the explosion sequence.

The presentation engine 410 creates a presentation using the imagescreated by the image capture module. For example, the presentationengine 410 can place the images in an order to create an assemblypresentation that shows an assembly sequence for an assembly. In someimplementations, the presentation engine 410 can be used to change theorder of images in an assembly presentation, delete images from anassembly presentation, or add images to an assembly presentation. Insome implementations, the presentation engine 410 adds animation to anassembly presentation to show components of an assembly moving betweenvarious stages of an assembly or disassembly sequence as describedabove.

The computing device 402 also has hardware or firmware devices includingone or more processors 416, one or more additional devices 418, computerreadable medium 420, and one or more user interface devices 424. Userinterface devices 424 include, for example, a display, a speaker, akeyboard, and a mouse or touch screen. The one or more processors 416can be used to execute program code and perform the functionality of theabove describe executable software programs. The computer readablemedium 420 can store executable software programs. In someimplementations, the computer readable medium is used to storerenderings generated by the rendering module 404, explosion sequencesgenerated by the explosion sequencer 406, occlusion views generated bythe occlusion view generator, images captured by the image capturemodule 408, or presentations created by the presentation engine 410.

In some implementations, the communication interface 422 is used tocommunicate with one or more user devices, such as first and second userdevices 426 and 428, through a network 430 (e.g. the internet). Forexample, the first and second user devices 426 and 428 can be desktopcomputers and the computing device 402 is a server. The first userdevice 426 can receive explosion sequences generated by the explosionsequencer 406, images generated by the image capture module 408, orassembly presentations crated by the presentation engine 410 from thecomputing device 402 via the network 430. As another example, the seconduser device 428 can receive an assembly presentation from the computingdevice 402 over the network 430 and display the assembly presentation toa user using a monitor.

Referring now to FIG. 5, a method 500 for presenting stages in anexplosion sequence includes a step 502 of providing a rendering of athree-dimensional assembly of components. For example, thethree-dimensional rendering 100 shown in FIG. 1A is generated using CADsoftware and displayed on a monitor. As another example, a previouslygenerated rendering of a three-dimensional assembly is provided to acomputer, such as the computing device 402 shown in FIG. 4.

At step 504, an explosion sequence for separating first components ofthe assembly is determined. For example, referring to FIG. 4, theexplosion sequencer 406 determines a sequence for separating two or morecomponents of an assembly. As another example, referring to FIGS. 2A-2G,an explosion sequence for separating the components of the assembly 202in order to create the fully disassembled view shown in FIG. 2H isdetermined. More specifically, it can be determined that the first stepin the explosion sequence includes separating the component 204 from thesub-assembly 206. It can further be determined that the second step inthe explosion sequence includes separating the component 210 from thesub-assembly 212. In some implementations, determining an explosionsequence for separating first components of the assembly includesidentifying and analyzing occlusion views of the assembly.

At step 506, a first input from an interactive control is received and afirst stage in the explosion sequence is selected based on the firstinput. For example, referring to FIGS. 2A-2G, an input is received fromthe first interactive control 250 indicating that the third step of theexplosion sequence is to be selected. The third stage of the explosionsequence, as shown in FIG. 2C, can then be selected. As another example,the first step in the explosion sequence is displayed as shown in FIG.2A. A user selects the button 254 using the cursor 280 to advance theexplosion sequence to the second step. The second step of the explosionsequence, as shown in FIG. 2B, is selected in response to the user inputreceived from the first interactive control 250. As yet another example,a user can use the slider control 256 of the first interactive control250 to move between stages of the explosion sequence and indicate astage that is to be selected. As yet another example, the text field 258can receive a user input of “10.” The tenth step of the explosionsequence, as shown in FIG. 2E, can be selected in response to the userinput.

At step 508, the rendering of the assembly is updated to show the firststage of the explosion sequence in response to the first input. Forexample, referring again to FIGS. 2A-2G, the three-dimensional rendering200 can be displayed as shown in FIG. 2B. A user can select the button254 to advance the explosion sequence. The three-dimensional rendering200 can be updated to display the third step of the explosion sequenceas shown in FIG. 2C. As another example, input indicating that theeleventh step of the explosion sequence can be received from the firstinteractive control 250. The three-dimensional rendering 200 is thenupdated to show the eleventh step of the explosion sequence as shown inFIG. 2F.

At step 510, a second input from the interactive control is received anda different second stage in the explosion sequence is selected based onthe second input. For example, referring again to FIGS. 2A-2G, afterselecting the button 254 to advance the explosion sequence from thefirst step to the second step, a user can select the button 254 again toadvance the explosion sequence from the second step to the third step.The third step of the explosion sequence is selected in response to thisinput. As another example, the slider control 256 can be used toindicate a second stage of the explosion sequence. The first interactivecontrol 250 provides this indication as a second input. The indicatedsecond stage is then selected in response to the second input.

At step 512, the rendering of the assembly is updated to show the secondstage of the explosion sequence in response to the second input. Forexample, referring to FIG. 2D, the second input indicates that theeighth stage in the explosion sequence. The three-dimensional rendering200 is updated to show the eighth stage of the explosion sequence asshown in FIG. 2D.

Referring now to FIG. 6, a method for separating two components of anassembly in a three-dimensional rendering includes a step 602 ofproviding a rendering of a three-dimensional assembly of components. Forexample, the three-dimensional rendering 200 shown in FIG. 2A isgenerated using CAD software and displayed on a computer screen. Asanother example, a previously generated rendering of a three-dimensionalassembly is provided to a computer, such as the first user device 426shown in FIG. 4.

At step 604, a plurality of occlusion views for first and secondcomponents of the assembly are selected. In some implementations, eachocclusion view represents the first and second component in a differentviewing direction and identifies where the first component is blocked bythe second component for the associated viewing direction. For example,referring to FIG. 4, the occlusion view generator 412 can generate aplurality of occlusion views of an assembly from a plurality ofdifferent viewing angles. In some implementations, a computer readablemedium can store previously generated occlusion views of an assembly. Aplurality of the previously generated occlusion views that areassociated with the first and second components can be selected. Asanother example, referring to FIGS. 1A-1H, the occlusion views 110, 120,130, 140, 150, 160, and 170 are selected. As another example, only theocclusion views 130, 150, and 170 are selected since each of theocclusion views 130, 150, and 170 indicate areas where the component 106is physically blocked by the component 104.

At step 606, an occlusion ranking for each occlusion view is determined.For example, an occlusion percentage can be assigned to each occlusionview. The occlusion percentage can represent a percentage of a firstcomponent that is physically blocked by one or more other components fora given occlusion view. As another example, referring to FIGS. 1A-1H,the occlusion view 130 is assigned an occlusion ranking of poor, theocclusion view 150 is assigned an occlusion ranking of bad, and theocclusion view 170 is assigned an occlusion ranking of best. Theocclusion view 170 is assigned an occlusion ranking of best since theocclusion view 170 indicates that the component 106 is not physicallyblocked by the component 104 for the occlusion view 170.

At step 608, an occlusion view is identified from the plurality ofocclusion views where the occlusion ranking of the identified occlusionview satisfies a criterion. For example, the identified occlusion viewmay have a best occlusion ranking. As another example, the identifiedocclusion view may have a lowest occlusion percentage. As yet anotherexample, the identified occlusion view may have an occlusion percentagethat is equal to or below a predetermined threshold. As yet anotherexample, the occlusion ranking of the identified occlusion view can bethe same as an occlusion ranking for one or more other occlusion views,where the shared occlusion ranking is better than occlusion rankings forall remaining occlusion views of the plurality of occlusion views.

At step 610, a viewing direction associated with the identifiedocclusion view is selected as a first separation direction forseparating the first and second components. For example, referring toFIG. 1H, the occlusion view 170 is associated with an occlusion rankingthat satisfies a criterion as described above for step 608. The viewingdirection of the occlusion view 170 is selected as a separationdirection for separating the component 106 from the component 104. Insome implementations, the separation direction is selected as beingtowards the point of view for the occlusion view 170.

At step 612, the rendering of the assembly is updated to show the firstcomponent spatially separated from the second component by repositioningone of the first component and the second component along the firstseparation direction. For example, referring to FIGS. 1A-1H, thecomponent 106 is separated from the component 104 by moving thecomponent 106 along the separation direction. In some implementations,moving the component 106 along the separation direction includes movingthe component 106 towards the point of view of the occlusion view 170while the component 104 maintains a stationary position within thethree-dimensional rendering. In some implementations, the component 106is moved until a distance between the component 106 and the component104 is equal to a specified distance gap. In some implementations, thedistance between the component 106 and the component 104 is determinedby projecting the components 104 and 106 onto a line, as described abovewith reference to FIG. 3. As another example, referring to FIGS. 2A-2G,a separation direction for separating the component 204 from thesub-assembly 206 is identified. The three-dimensional rendering 200 isthen updated to show the component 204 repositioned along an identifiedseparation direction with respect to the sub-assembly 206 so that thecomponent 204 is spatially separated from the sub-assembly 206.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made without departingfrom the spirit and scope of this disclosure. Accordingly, otherimplementations are within the scope of the following claims.

1. A computer-implemented method comprising: providing a rendering of athree-dimensional assembly of components; determining an explosionsequence for separating first components of the assembly wherein theexplosion sequence comprises stages in which each stage represents adifferent spatial relationship between two or more of the firstcomponents; receiving a first input from an interactive control andselecting a first stage in the explosion sequence based on the firstinput; responsive to the first input, updating the rendering of theassembly to show the first stage of the explosion sequence; receiving asecond input from the interactive control and selecting a differentsecond stage in the explosion sequence based on the second input;responsive to the second input, updating the rendering of the assemblyto show the second stage of the explosion sequence; receiving inputindicating that images of a plurality of stages of the explosionsequence are to be saved; saving images of the indicated plurality ofstages; and creating a presentation which includes images of theindicated plurality of stages.
 2. The method of claim 1 in which thestages, when rendered in order, represent a disassembly sequence of theassembly.
 3. The method of claim 1 in which the control is a slidercontrol.
 4. The method of claim 1 in which the presentation is anassembly presentation, wherein the assembly presentation represents aseries of steps to be performed when assembling the assembly.
 5. Themethod of claim 1 in which the presentation is a disassemblypresentation, wherein the disassembly presentation represents a seriesof steps to be performed when disassembling the assembly.
 6. The methodof claim 1 in which the presentation includes an animation that shows atleast one component moving between a position depicted in the firststage and a position depicted in the second stage.
 7. The method ofclaim 1, further comprising: receiving a third input from a componentdistance control; and adjusting a distance between two components in thefirst or second stage based on the third input.
 8. Acomputer-implemented method comprising: providing a rendering of athree-dimensional assembly of components; determining a first separationdirection for separating a first component from a second component,wherein determining the first separation direction comprises: selectinga plurality of occlusion views for the first and second component,wherein each occlusion view represents the first and second component ina different viewing direction and identifies where the first componentis blocked by the second component for the viewing direction;determining an occlusion ranking for each occlusion view wherein theocclusion ranking is based on an occlusion percentage of the occlusionview, wherein the occlusion percentage is the percentage of the firstcomponent that is blocked by the second component for a given occlusionview; identifying an occlusion view from the plurality of occlusionviews wherein the occlusion ranking of the identified occlusion viewsatisfies a criterion, wherein the identified occlusion view satisfiesthe criterion by having a lowest occlusion percentage from among theplurality of occlusion views; and selecting the viewing directionassociated with the identified occlusion view as the first separationdirection; and updating the rendering of the assembly to show the firstcomponent spatially separated from the second component by repositioningone of the first component and the second component along the firstseparation direction.
 9. The method of claim 8 in which the firstcomponent represents a substantially linear component and the identifiedocclusion view satisfies the criterion by having a viewing directionthat is the same as a major axis of the first component.
 10. The methodof claim 8, further comprising: determining a second separationdirection for separating a third component from the second component;updating the rendering of the assembly to show the second componentspatially separated from the third component by repositioning one of thesecond component and the third component along the second separationdirection; positioning the third component in an original positionassociated with the third component in the rendering while keeping thesecond component positioned about an axis defined by the secondseparation direction with respect to the third component and keeping thefirst component positioned about an axis defined by the first separationdirection with respect to the second component; and moving the secondcomponent towards an original position associated with the secondcomponent in the rendering until the second component reaches aspecified distance gap from the third component while keeping the firstcomponent positioned about an axis defined by the first separationdirection with respect to the second component.
 11. The method of claim10 in which the distance between the second component and the thirdcomponent is determined by projecting the second and third componentsonto a line and measuring the distance on the line between theprojections of the second and third components.
 12. The method of claim11 in which the line is parallel to the axis defined by the secondseparation direction.
 13. The method of claim 10 in which updating therendering of the assembly to show the second component spatiallyseparated from the third component comprises moving one of the secondand third components a distance greater than the specified distance gap.14. The method of claim 10, further comprising: receiving an input froma component distance control; assigning a new value to the specifieddistance gap based on the input; and positioning the second componentalong the axis defined by the second separation direction a distanceequivalent to the new specified distance gap from the third componentwhile keeping the first component positioned about an axis defined bythe first separation direction with respect to the second component. 15.The method of claim 10, further comprising moving the first componenttowards an original position associated with the first component in thethree-dimensional rendering until the first component reaches aspecified distance gap from the second component.
 16. The method ofclaim 10 in which the first separation direction is different from thesecond separation direction.
 17. The method of claim 16 in which thefirst separation direction is less than 90 degrees from the secondseparation direction.
 18. A system comprising: one or more computersprogrammed to perform operations comprising: providing a rendering of athree-dimensional assembly of components; determining a first separationdirection for separating a first component from a second component,wherein determining the first separation direction comprises: selectinga plurality of occlusion views for the first and second component,wherein each occlusion view represents the first and second component ina different viewing direction and identifies where the first componentis blocked by the second component for the viewing direction;determining an occlusion ranking for each occlusion view wherein theocclusion ranking is based on an occlusion percentage of the occlusionview, wherein the occlusion percentage is the percentage of the firstcomponent that is blocked by the second component for a given occlusionview; identifying an occlusion view from the plurality of occlusionviews wherein the occlusion ranking of the identified occlusion viewsatisfies a criterion, wherein the identified occlusion view satisfiesthe criterion by having a lowest occlusion percentage from among theplurality of occlusion views; and selecting the viewing directionassociated with the identified occlusion view as the first separationdirection; and updating the rendering of the assembly to show the firstcomponent spatially separated from the second component by repositioningone of the first component and the second component along the firstseparation direction.
 19. The system of claim 18 in which the firstcomponent represents a substantially linear component and the identifiedocclusion view satisfies the criterion by having a viewing directionthat is the same as a major axis of the first component.
 20. The systemof claim 18, wherein the operations further comprise: determining asecond separation direction for separating a third component from thesecond component; updating the rendering of the assembly to show thesecond component spatially separated from the third component byrepositioning one of the second component and the third component alongthe second separation direction; positioning the third component in anNew position associated with the third component in the rendering whilekeeping the second component positioned about an axis defined by thesecond separation direction with respect to the third component andkeeping the first component positioned about an axis defined by thefirst separation direction with respect to the second component; andmoving the second component towards an New position associated with thesecond component in the rendering until the second component reaches aspecified distance gap from the third component while keeping the firstcomponent positioned about an axis defined by the first separationdirection with respect to the second component.
 21. The system of claim20 in which the distance between the second component and the thirdcomponent is determined by projecting the second and third componentsonto a line and measuring the distance on the line between theprojections of the second and third components.
 22. The system of claim21 in which the line is parallel to the axis defined by the secondseparation direction.
 23. The system of claim 20 in which updating therendering of the assembly to show the second component spatiallyseparated from the third component comprises moving one of the secondand third components a distance greater than the specified distance gap.24. The system of claim 20, wherein the operations further comprise:receiving an input from a component distance control; assigning a newvalue to the specified distance gap based on the input; and positioningthe second component along the axis defined by the second separationdirection a distance equivalent to the new specified distance gap fromthe third component while keeping the first component positioned aboutan axis defined by the first separation direction with respect to thesecond component.
 25. The system of claim 20, wherein the operationsfurther comprise moving the first component towards an New positionassociated with the first component in the three-dimensional renderinguntil the first component reaches a specified distance gap from thesecond component.
 26. The system of claim 20 in which the firstseparation direction is different from the second separation direction.27. The system of claim 26 in which the first separation direction isless than 90 degrees from the second separation direction.
 28. A systemcomprising: one or more computers programmed to perform operationscomprising: providing a rendering of a three-dimensional assembly ofcomponents; determining an explosion sequence for separating firstcomponents of the assembly wherein the explosion sequence comprisesstages in which each stage represents a different spatial relationshipbetween two or more of the first components; receiving a first inputfrom an interactive control and selecting a first stage in the explosionsequence based on the first input; responsive to the first input,updating the rendering of the assembly to show the first stage of theexplosion sequence; receiving a second input from the interactivecontrol and selecting a different second stage in the explosion sequencebased on the second input; responsive to the second input, updating therendering of the assembly to show the second stage of the explosionsequence; receiving input indicating that images of a plurality ofstages of the explosion sequence are to be saved; saving images of theindicated plurality of stages; and creating a presentation whichincludes images of the indicated plurality of stages.
 29. The system ofclaim 28 in which the stages, when rendered in order, represent adisassembly sequence of the assembly.
 30. The system of claim 28 inwhich the control is a slider control.
 31. The system of claim 28 inwhich the presentation is an assembly presentation, wherein the assemblypresentation represents a series of steps to be performed whenassembling the assembly.
 32. The system of claim 28 in which thepresentation is a disassembly presentation, wherein the disassemblypresentation represents a series of steps to be performed whendisassembling the assembly.
 33. The system of claim 28 in which thepresentation includes an animation that shows at least one componentmoving between a position depicted in the first stage and a positiondepicted in the second stage.
 34. The system of claim 28, wherein theoperations further comprise: receiving a third input from a componentdistance control; and adjusting a distance between two components in thefirst or second stage based on the third input.